import * as XLSX from 'xlsx'

interface ScoreData {
	studentId: string
	name: string
	scores: {
		theory: {
			status?: string
			midTerm?: number
			final?: number
			usual?: number
			total?: number
		}
		practice: {
			status?: string
			midTerm?: number
			final?: number
			usual?: number
			total?: number
		}
	}
}

export const exportScoreToExcel = (data: ScoreData[], className: string) => {
	// 转换数据为表格格式
	const excelData = data.map((student) => ({
		学号: student.studentId,
		姓名: student.name,
		// 理论部分
		理论考试情况:
			student.scores.theory.status === 'normal'
				? '正常'
				: student.scores.theory.status === 'absent'
					? '缺考'
					: student.scores.theory.status === 'violation'
						? '违规'
						: '-',
		理论期中: student.scores.theory.midTerm || '-',
		理论期末: student.scores.theory.final || '-',
		理论平时: student.scores.theory.usual || '-',
		理论总分: student.scores.theory.total || '-',
		// 实践部分
		实践考试情况:
			student.scores.practice.status === 'normal'
				? '正常'
				: student.scores.practice.status === 'absent'
					? '缺考'
					: student.scores.practice.status === 'violation'
						? '违规'
						: '-',
		实践期中: student.scores.practice.midTerm || '-',
		实践期末: student.scores.practice.final || '-',
		实践平时: student.scores.practice.usual || '-',
		实践总分: student.scores.practice.total || '-'
	}))

	// 创建工作簿
	const wb = XLSX.utils.book_new()

	// 创建工作表
	const ws = XLSX.utils.json_to_sheet(excelData)

	// 添加工作表到工作簿
	XLSX.utils.book_append_sheet(wb, ws, '成绩单')

	// 生成文件名
	const fileName = `${className}成绩单.xlsx`

	// 导出文件
	XLSX.writeFile(wb, fileName)
}
